import pygame

# 初始化Pygame
pygame.init()

# 设置窗口尺寸
win_width, win_height = 800, 600
win = pygame.display.set_mode((win_width, win_height))

# 加载复合图像
image = pygame.image.load("walk.jpg")

# 每个小人的宽度和高度
walker_width = 36  # 确保这是每个小人的实际宽度
walker_height = 87  # 确保这是每个小人的实际高度

# 动画相关变量
walk_count = 0
walkers_count = 5  # 确保这是图像中横向排列的小人数量

# 控制动画速度的基础延迟时间和调整值
base_delay = 70  # 基础延迟时间，单位毫秒
speed_up_factor = 100  # 按下加速键时减少的时间
speed_down_factor = 100  # 按下减速键时增加的时间

# 当前延迟时间
current_delay = base_delay

# 主循环
run = True
while run:
    pygame.time.delay(current_delay)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:  # 按向上键加速
                current_delay -= speed_up_factor
                if current_delay < 10:  # 设置最小延迟时间
                    current_delay = 10
            elif event.key == pygame.K_DOWN:  # 按向下键减速
                current_delay += speed_down_factor
        elif event.type == pygame.KEYUP:
            # 如果释放了键，重置为基础延迟时间
            if event.key in [pygame.K_UP, pygame.K_DOWN]:
                current_delay = base_delay

    # 清屏
    win.fill((0, 0, 0))

    # 计算当前要显示的小人图像的索引
    walker_index = walk_count // 3 % walkers_count

    # 确保walker_index不会越界
    if walker_index < walkers_count:
        # 获取当前小人的位置
        x = walker_index * walker_width

        # 使用subsurface来获取当前小人的图像
        walker_surface = image.subsurface(pygame.Rect(x, 0, walker_width, walker_height))

        # 绘制当前小人图像
        win.blit(walker_surface, (100, 100))  # 调整位置以适应你的屏幕

    # 更新walk_count
    walk_count += 1
    if walk_count >= walkers_count * 3:
        walk_count = 0

    # 更新显示
    pygame.display.update()

# 游戏结束，关闭Pygame
pygame.quit()
